/**
 * 有一个请求方法
 * getData(){
 *   return axios.get('api/user')
 * }
 * 
 * 在 A组件 调用了一次getData()，
 * 请求还没回来，然后在 b组件 里面又调用了getData()请求还没回来，
 * 想把 A组件 里面的getData() 请求的数据给到B组件的，
 * 希望请求只发送一次，他们2个拿到状态都是一样的
*/

function createRequest(requestFn, time = 1000) {
    let promise

    return function(data) {
        return (promise ??= requestFn().finally(() => {
            setTimeout(() => {
                promise = undefined
            }, time)
        }))
    }
}

const getData = createRequest((data) => {
    return axios.post('api/user', data)
})

// A组件
getData()

// 请求的数据给到B组件的
getData()